home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / util / boot / appvm.lha / AppVM / client.s < prev    next >
Text File  |  1992-03-30  |  2KB  |  121 lines

  1. **********************************************************************************
  2. * Client.s    26/MAR/92    written by Laurence Vanhelsuwé
  3. * --------
  4. *
  5. * This is an example program to demonstrate the usage of the new MEMF_VM allocation
  6. * option with AllocMem().
  7. *
  8. **********************************************************************************
  9.  
  10.         include    std
  11.         include    exec/vmemory.i        ;note: V_memory
  12.  
  13. PAGES        equ    VMEM_PAGESIZE
  14.  
  15. START:        move.l    4.w,a6
  16.         lea    dosname,a1
  17.         moveq    #0,d0
  18.         EXEC    OpenLibrary        ;get DOS
  19.         move.l    d0,DOS_LIB_PTR
  20.  
  21. ;------------------------------------------------
  22.         move.l    #4*1024*1024,d0        ;give me 4 Megabytes
  23.         move.l    #MEMF_VM,d1        ;of Virtual Memory please !
  24.         EXEC    AllocMem
  25.         move.l    d0,d7
  26.         beq    failed_alloc
  27. ;---------------
  28.         move.l    d7,a0            ;-> VM block
  29.         move.b    (a0),d0            ;access page 0
  30.  
  31.         add.l    #32768,a0        ;goto page 2
  32.         move.l    16382(a0),-16384(a0)    ;demand page 2,3 and 1
  33.     
  34.         move.l    DOS_LIB_PTR,a6
  35.         move.l    #fname,d1
  36.         move.l    #MODE_OLDFILE,d2    ;open a file that's N bytes long
  37.         DOS    Open
  38.         move.l    d0,fhandle
  39.  
  40.         move.l    fhandle,d1
  41.         move.l    d7,d2            ;load entire file into VM !
  42.         move.l    #46507,d3
  43.         DOS    Read
  44.  
  45.         move.l    fhandle,d1
  46.         DOS    Close            ;release file
  47.  
  48.         move.l    a6,a1
  49.         move.l    4.w,a6            ;release DOS
  50.         EXEC    CloseLibrary
  51. ;---------------
  52. done_VM        move.l    4.w,a6
  53.         move.l    #4*1024*1024,d0        ;release 4 Megabytes
  54.         move.l    d7,a1
  55.         EXEC    FreeMem
  56.         rts
  57. ;---------------
  58.     IFD bla
  59.         move.l    #20*PAGES,d0
  60.         move.l    #MEMF_VM,d1
  61.         EXEC    AllocMem
  62.         move.l    d0,ptr1
  63.  
  64.         move.l    #30*PAGES,d0
  65.         move.l    #MEMF_VM,d1
  66.         EXEC    AllocMem
  67.         move.l    d0,ptr2
  68.  
  69.         move.l    #15*PAGES,d0
  70.         move.l    #MEMF_VM,d1
  71.         EXEC    AllocMem
  72.         move.l    d0,ptr3
  73.  
  74.         move.l    #7*PAGES,d0
  75.         move.l    #MEMF_VM,d1
  76.         EXEC    AllocMem
  77.         move.l    d0,ptr4
  78.  
  79.         move.l    #42*PAGES,d0
  80.         move.l    #MEMF_VM,d1
  81.         EXEC    AllocMem
  82.         move.l    d0,ptr5
  83. ;---------------
  84.         move.l    #15*PAGES,d0        ;3rd alloc first
  85.         move.l    ptr3,a1
  86.         EXEC    FreeMem
  87.  
  88.         move.l    #20*PAGES,d0        ;1st alloc next
  89.         move.l    ptr1,a1
  90.         EXEC    FreeMem
  91.         
  92.         move.l    #7*PAGES,d0        ;4th next
  93.         move.l    ptr4,a1
  94.         EXEC    FreeMem
  95.  
  96.         move.l    #30*PAGES,d0        2nd next
  97.         move.l    ptr2,a1
  98.         EXEC    FreeMem
  99.  
  100.         move.l    #42*PAGES,d0        ;last last
  101.         move.l    ptr5,a1
  102.         EXEC    FreeMem
  103.     ENDC
  104.  
  105. failed_alloc    rts                ;back to CLI (phew!)
  106. ;------------------------------------------------
  107. ptr1        ds.l    1
  108. ptr2        ds.l    1
  109. ptr3        ds.l    1
  110. ptr4        ds.l    1
  111. ptr5        ds.l    1
  112.  
  113. fhandle        ds.l    1
  114. DOS_LIB_PTR    ds.l    1
  115.  
  116. fname        dc.b    "DOCS:HANDSHAKE.DOC",0
  117.  
  118. dosname        DOSNAME
  119.  
  120.         END
  121.